An important operational aspect of a computer or of a computer system is the need to transfer data to and from the memory of the computer. However, if the computer's processor is used to perform the task of transferring data to and from the computer's memory, then the processor is unable to perform other functions. When a computer is supporting high speed devices that have significant memory needs, the processor bears a heavy load if the processor is required to copy data word by word to and from the computer's memory system for those devices. As a result, using the processor to transfer data in this manner can consume precious processing time.
Real time multimedia applications are becoming increasingly important. These multimedia applications may require extremely fast processing speeds, and data transfer speeds, such as many thousands of megabits of data per second. While some processing systems employ a single processor to achieve fast processing speeds, others are implemented utilizing multiprocessor architectures. In multiprocessor systems, a plurality of sub processors can operate in parallel (or at least in concert) to achieve desired processing results.
In recent years, there has been an insatiable desire for faster computer processing data throughputs because cutting edge computer applications are becoming more and more complex, and are placing ever increasing demands on processing systems. Graphics applications are among those that place the highest demands on a processing system because they require such vast numbers of data accesses, data computations, and data manipulations in relatively short periods of time to achieve desirable results.
A solution to the need for faster computer processing data throughputs is direct memory access (DMA). DMA techniques may be employed where the computer architecture allows data to be sent directly between a source device and a destination device without involving any processor(s) in the data transfer. The architecture usually includes a controller that receives data transfer commands from the device(s) of the system to cause the transfer of data. A conventional DMA command may specify a data block size, an address within the system memory from/to which data is to be transferred, and a start address of the device to/from which data is to be transferred. In this manner, data may be rapidly transmitted between a specified device and a specified memory without burdening a microprocessor.
Conventional DMA techniques may perform processing on a plurality of queues. In one example, a first queue may include descriptors identifying DMA data that is to be moved from a source device to a destination device, and a second queue may include DMA instruction descriptors that pertain to instruction or command data. In some implementations, a size of the data processed by the descriptors in the first queue is greater than a size of the instruction data processed by the descriptors in the second queue. Therefore, in some circumstances, DMA techniques may initiate processing DMA data based on one or more descriptors in the first queue while pausing processing of the instruction data associated with the descriptors in the second queue. However, the second queue may have to be paused for an exorbitant period of time to allow DMA techniques to complete the processing of data associated with the descriptors in the first queue. Forcing the second queue to remain idle while the first queue is processed may diminish the data transfer efficiency of conventional DMA techniques.
It is with respect to these considerations and others that the disclosure made herein is presented.